{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业四\n",
    "* 处理泰坦尼克数据集 \n",
    "* 期望 泰坦尼克号乘客的数据(姓名、年龄、票价等)来预测谁能活下来，谁会死。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "./titanic_data\\gender_submission.csv\n",
      "./titanic_data\\test.csv\n",
      "./titanic_data\\train.csv\n"
     ]
    }
   ],
   "source": [
    "import os \n",
    "\n",
    "for dirname, _, filenames in os.walk('./titanic_data'):\n",
    "    for filename in filenames:\n",
    "        print(os.path.join(dirname,filename))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#加载csv 训练集\n",
    "Train_set=pd.read_csv('./titanic_data/train.csv')\n",
    "Train_set.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#加载csv 测试集\n",
    "Test_set=pd.read_csv('./titanic_data/train.csv')\n",
    "Test_set.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId      0\n",
       "Survived         0\n",
       "Pclass           0\n",
       "Name             0\n",
       "Sex              0\n",
       "Age            177\n",
       "SibSp            0\n",
       "Parch            0\n",
       "Ticket           0\n",
       "Fare             0\n",
       "Cabin          687\n",
       "Embarked         2\n",
       "dtype: int64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set.isnull().sum()  #检测是否有缺失"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 1.可以看出Age有177个缺失，Cabin有687个缺失，Embarked有2个\n",
    "# 2.Age用平均值填充，Cabin删除，Embarked 有2个"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Embarked</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>168</td>\n",
       "      <td>168</td>\n",
       "      <td>168</td>\n",
       "      <td>168</td>\n",
       "      <td>168</td>\n",
       "      <td>130</td>\n",
       "      <td>168</td>\n",
       "      <td>168</td>\n",
       "      <td>168</td>\n",
       "      <td>168</td>\n",
       "      <td>69</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Q</th>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "      <td>28</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "      <td>77</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>S</th>\n",
       "      <td>644</td>\n",
       "      <td>644</td>\n",
       "      <td>644</td>\n",
       "      <td>644</td>\n",
       "      <td>644</td>\n",
       "      <td>554</td>\n",
       "      <td>644</td>\n",
       "      <td>644</td>\n",
       "      <td>644</td>\n",
       "      <td>644</td>\n",
       "      <td>129</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          PassengerId  Survived  Pclass  Name  Sex  Age  SibSp  Parch  Ticket  \\\n",
       "Embarked                                                                        \n",
       "C                 168       168     168   168  168  130    168    168     168   \n",
       "Q                  77        77      77    77   77   28     77     77      77   \n",
       "S                 644       644     644   644  644  554    644    644     644   \n",
       "\n",
       "          Fare  Cabin  \n",
       "Embarked               \n",
       "C          168     69  \n",
       "Q           77      4  \n",
       "S          644    129  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set.groupby(\"Embarked\").count()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "30.0"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#求出平均年龄\n",
    "mean_age=round(Train_set[\"Age\"].mean())\n",
    "mean_age"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "#平均年龄为30\n",
    "Train_set[\"Age\"].fillna(mean_age,inplace =True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId    0\n",
       "Survived       0\n",
       "Pclass         0\n",
       "Name           0\n",
       "Sex            0\n",
       "Age            0\n",
       "SibSp          0\n",
       "Parch          0\n",
       "Ticket         0\n",
       "Fare           0\n",
       "Embarked       0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#填充Embarked修改成“S”\n",
    "Train_set[\"Embarked\"].fillna(\"S\",inplace =True)\n",
    "#删除Cabin这一列\n",
    "Train_set =Train_set.dropna(axis=1)\n",
    "Train_set.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 特征分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "681"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 删除无相关性的属性\n",
    "len(Train_set.groupby(\"Ticket\").count())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>male</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.742038</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.188908</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Survived\n",
       "male          \n",
       "0     0.742038\n",
       "1     0.188908"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#提取合并特征(独热编码)\n",
    "#Train_set_num 特征表示女性与生存，男性与死亡的关系\n",
    "dummy_sex=pd.get_dummies(Train_set.Sex) \n",
    "dummy_embarked=pd.get_dummies(Train_set.Embarked)\n",
    "Train_set_num = pd.concat([Train_set, dummy_sex[\"male\"], dummy_embarked[['C', 'Q']]], axis = 1)\n",
    "pd.pivot_table(Train_set_num, index = \"male\", values = \"Survived\", aggfunc = np.mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 可以看出男性死亡率为 74%，生存率为18%"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <th>Q</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">0</th>\n",
       "      <th>0</th>\n",
       "      <td>0.339009</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.389610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <th>0</th>\n",
       "      <td>0.553571</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived\n",
       "C Q          \n",
       "0 0  0.339009\n",
       "  1  0.389610\n",
       "1 0  0.553571"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.pivot_table(Train_set_num, index = ['C', 'Q'], values = \"Survived\", aggfunc = np.mean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>male</th>\n",
       "      <th>C</th>\n",
       "      <th>Q</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived  Pclass   Age  SibSp  Parch     Fare  male  C  Q\n",
       "0         0       3  22.0      1      0   7.2500     1  0  0\n",
       "1         1       1  38.0      1      0  71.2833     0  1  0\n",
       "2         1       3  26.0      0      0   7.9250     0  0  0\n",
       "3         1       1  35.0      1      0  53.1000     0  0  0\n",
       "4         0       3  35.0      0      0   8.0500     1  0  0"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#删除Ticket,Name,Sex,Embarked属性\n",
    "Train_set_num.drop([\"PassengerId\",\"Ticket\",\"Name\",\"Sex\",\"Embarked\"],inplace = True, axis = 1)\n",
    "Train_set_num.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 864x720 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns #Seaborn是对matplotlib的extend\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#绘制热力图\n",
    "plt.figure(figsize=(12,10))\n",
    "cor = Train_set_num.corr()\n",
    "sns.heatmap(cor, annot=True, cmap=plt.cm.Reds)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAbDUlEQVR4nO3de5ScdZ3n8fcnF26Gi0BkIB1oMQHxghFiBoezXCS4BucYHMHLoMQ5YcLssuB6ObOOwyXSgYFxBzAoLiDRho0DKCoZNgpJSMTxQkgkCcRo0sY4NDCSYAIEEEny3T+eX4XqTlV1dXdVV9XTn9c5ffr5Pddv3T71q189VaWIwMzM8mVEowswM7Pac7ibmeWQw93MLIcc7mZmOeRwNzPLoVGNLgDg0EMPjfb29kaXYWbWUlauXLklIsaWWtYU4d7e3s6KFSsaXYaZWUuR9LtyyzwsY2aWQw53M7MccribmeWQw93MLIcc7mYtZvny5Zx22mmsXLmy0aVYE3O4m7WY2bNns2vXLi677LJGl2JNzOFu1kKWL1/O9u3bAdi+fbt771aWw92shcyePbtH2713K8fhbtZCCr32cm2zAoe7WQsZM2ZMxbZZQVXhLmmTpMckrZK0Is07WNIiSRvS/9en+ZI0V1KXpDWSTqjnBTAbTnoPy3R0dDSmEGt6/em5nx4RkyJicmp/HlgSEROBJakNMA2YmP5mAV+rVbFmw92UKVN299bHjBnDiSee2OCKrFkNZlhmOtCZpjuBs4vm3x6ZnwMHSTp8EMcxsyKzZ89mxIgR7rVbRdV+K2QAD0gK4OaIuAU4LCKeBoiIpyW9Ia07DniiaNvuNO/p4h1KmkXWs+fII48c+CUwG2amTJnCsmXLGl2GNblqw/3kiHgqBfgiSb+qsK5KzIs9ZmRPELcATJ48eY/lZmY2cFUNy0TEU+n/M8D3gCnA7wvDLen/M2n1bmB80eZtwFO1KtjMzPrWZ7hLep2k/QvTwHuBx4EFwIy02gzg3jS9ADg/nTVzEvBcYfjGzMyGRjXDMocB35NUWP9bEfFDSY8Ad0uaCfwHcG5afyFwFtAFvAT8Tc2rNjOzivoM94jYCLyjxPxngTNKzA/goppUZ2ZmA+JPqJqZ5ZDD3cwshxzuZmY55HA3M8shh7uZWQ453M3McsjhbmaWQw53M7MccribmeWQw93MLIcc7mZmOeRwNzPLIYe7mVkOOdzNzHLI4W5mlkMOdzOzHHK4m5nlkMPdzCyHHO5mZjnkcDczyyGHu5lZDjnczcxyyOFuZpZDDnczsxxyuJuZ5ZDD3cwshxzuZmY55HA3M8shh7uZWQ5VHe6SRkp6VNJ9qf1GSQ9L2iDpLkl7pfl7p3ZXWt5en9LNzKyc/vTcPwWsK2pfC1wfEROBrcDMNH8msDUiJgDXp/XMzGwIVRXuktqA9wNfT20B7wG+k1bpBM5O09NTm7T8jLS+mZkNkWp77jcAfw/sSu1DgG0RsSO1u4FxaXoc8ARAWv5cWt/MzIZIn+Eu6S+BZyJiZfHsEqtGFcuK9ztL0gpJKzZv3lxVsWZmVp1qeu4nAx+QtAm4k2w45gbgIEmj0jptwFNpuhsYD5CWHwj8ofdOI+KWiJgcEZPHjh07qAthZmY99RnuEfEPEdEWEe3AR4EHI+I8YClwTlptBnBvml6Q2qTlD0bEHj13MzOrn8Gc5/6/gM9I6iIbU78tzb8NOCTN/wzw+cGVaGZm/TWq71VeExHLgGVpeiMwpcQ6fwTOrUFtZmY2QP6EqplZDjnczcxyyOFuZpZDDnczsxxyuJuZ5ZDD3cwshxzuZmY55HA3M8shh7uZWQ453M3McsjhbmaWQw53M7MccribmeWQw93MLIcc7mZmOeRwNzPLIYe7mVkOOdzNzHLI4W5mlkMOdzOzHHK4m5nlkMPdzCyHHO5mZjnkcDczyyGHu5lZDjnczcxyyOFuZpZDDnczsxxyuJuZ5ZDD3cwsh/oMd0n7SFouabWktZK+mOa/UdLDkjZIukvSXmn+3qndlZa31/cimJlZb9X03F8B3hMR7wAmAe+TdBJwLXB9REwEtgIz0/ozga0RMQG4Pq1nZmZDqM9wj8z21Byd/gJ4D/CdNL8TODtNT09t0vIzJKlmFZuZWZ+qGnOXNFLSKuAZYBHwG2BbROxIq3QD49L0OOAJgLT8OeCQEvucJWmFpBWbN28e3KUwM7Meqgr3iNgZEZOANmAKcFyp1dL/Ur302GNGxC0RMTkiJo8dO7baes3MrAr9OlsmIrYBy4CTgIMkjUqL2oCn0nQ3MB4gLT8Q+EMtijUzs+pUc7bMWEkHpel9ganAOmApcE5abQZwb5pekNqk5Q9GxB49dzMzq59Rfa/C4UCnpJFkTwZ3R8R9kn4J3ClpDvAocFta/zbgDkldZD32j9ahbjMzq6DPcI+INcA7S8zfSDb+3nv+H4Fza1KdmZkNiD+hamaWQw53M7MccribmeWQw93MLIcc7mYtZvHixZxyyiksXbq00aVYE3O4m7WYq666CoArr7yywZVYM3O4m7WQxYsXs3PnTgB27tzp3ruV5XA3ayGFXnuBe+9WjsPdrIUUeu3l2mYFDnczsxxyuJu1kEMPPbRH21+XbeU43M1ayDXXXNOjfe21/hVLK83hbmaWQw53sxYyZ86cHm2fLWPlONzNWsimTZsqts0KHO5mLaS9vb1i26zA4W7WQi699NIe7csvv7xBlVizc7ibtZBjjjlmd2+9vb2dCRMmNLYga1oOd7MWc+aZZwIwbdq0BldizczhbtZivvGNbwBw6623NrgSa2YOd7MWsnjxYnbs2AHAjh07/K2QVpbD3ayFXH311T3aHR0dDarEmp3D3ayFFHrt5dpmBQ53sxYiqWLbrMDhbtZCRo8eXbFtVuBwN2shvU9/POussxpUiTU7h7tZCzn66KN7tP0hJivH4W7WQm688cYe7RtuuKFBlVizc7ibtRCfLWPVcribtZBRo0ZVbJsV9BnuksZLWippnaS1kj6V5h8saZGkDen/69N8SZorqUvSGkkn1PtCmA0XX/jCF3q0L7vssgZVYs2ump77DuCzEXEccBJwkaS3AJ8HlkTERGBJagNMAyamv1nA12petdkwNXXq1N299VGjRnH66ac3uCJrVn2Ge0Q8HRG/SNMvAOuAccB0oDOt1gmcnaanA7dH5ufAQZIOr3nlZsNUoffuXrtV0q8BO0ntwDuBh4HDIuJpyJ4AJL0hrTYOeKJos+407+le+5pF1rPnyCOPHEDpZsPT1KlTmTp1aqPLsCZX9RuqksYA9wD/MyKer7RqiXmxx4yIWyJickRMHjt2bLVlmJlZFaoKd0mjyYJ9fkR8N83+fWG4Jf1/Js3vBsYXbd4GPFWbcs3MrBrVnC0j4DZgXURcV7RoATAjTc8A7i2af346a+Yk4LnC8I2ZmQ2NasbcTwY+ATwmaVWa9wXgGuBuSTOB/wDOTcsWAmcBXcBLwN/UtGIzM+tTn+EeEf9O6XF0gDNKrB/ARYOsy8zMBsGfUDUzyyGHu5lZDjnczcxyyOFu1mLWr1/PtGnT6OrqanQp1sQc7mYtZs6cObz44otceeWVjS7FmpjD3ayFrF+/nk2bNgGwadMm996tLIe7WQuZM2dOj7Z771aOw92shRR67eXaZgUOd7MW0t7eXrFtVuBwN2shl156aY/25Zdf3qBKrNk53M1ayNKlS3u0f/SjHzWoEmt2DnezFjJ//vwe7c7OzjJr2nDncDczyyGHu5lZDjnczcxyyOFu1kJ8KqRVy+Fu1kJ8KqRVy+Fu1kJ8KqRVy+Fu1kJ8KqRVy+FuZpZDDnczsxxyuJu1kPPOO69He8aMGQ2qxJqdw92shVx44YU92jNnzmxQJdbsHO5mLWTx4sU92r3PnjErcLibtZCrr766R7ujo6NBlVizc7ibtZAdO3ZUbJsVONzNzHLI4W5mlkMOdzOzHOoz3CXNk/SMpMeL5h0saZGkDen/69N8SZorqUvSGkkn1LN4MzMrrZqe+zeB9/Wa93lgSURMBJakNsA0YGL6mwV8rTZlmplZf/QZ7hHxEPCHXrOnA4VvLOoEzi6af3tkfg4cJOnwWhVrNtwdfnjPh9MRRxzRoEqs2Q10zP2wiHgaIP1/Q5o/DniiaL3uNG8PkmZJWiFpxebNmwdYhtnw0vu89jlz5jSoEmt2tX5DVSXmRakVI+KWiJgcEZPHjh1b4zLMzIa3gYb77wvDLen/M2l+NzC+aL024KmBl2dmxT73uc/1aH/2s59tUCXW7AYa7guAwtfRzQDuLZp/fjpr5iTgucLwjZkN3rZt23q0t27d2qBKrNlVcyrkvwI/A46V1C1pJnANcKakDcCZqQ2wENgIdAG3Av+9LlXboGzZsoWLL76YZ599ttGlmFmdjOprhYj4WJlFZ5RYN4CLBluU1VdnZydr1qyhs7OTz3zmM40ux8zqwJ9QHWa2bNnCwoULiQgWLlzo3rtZTjnch5nOzs7d3yT46quv+geWzXLK4T7MPPDAA2SjZxAR3H///Q2uyMzqweE+zBx22GEV22aWDw73YebJJ5+s2DazfHC4DzOvvvpqxbaZ5YPD3cwsh/o8z93MhtbcuXPp6uqqev1LLrmkR3vChAl7zLPhxz13M7Mccs/drMlU6nWvX7+eCy64YHd73rx5TJgwYSjKshbjnrtZCznmmGN2T++zzz4OdivLPfec6s+4bameosdtm9cxxxxDV1cXN910U6NLsSbmnrtZi9lvv/04/vjj3Wu3itxzz6lyve5TTz1199cPAEhi7ty5Q1WWmQ0R99yHmS996Us92tddd12DKjGzenK4DzNTpkzZPS2JE088sYHVmFm9ONyHoaOPPhpwr90szxzuw9ABBxzApEmT3Gs3yzG/odqi+vsR9WIbNmwAKn9YphKfJmnW/BzuLaqrq4tH1z4KBw1g413Zv0effLT/224bwPHMbMg53FtUd3f3wDce08BjG+BXXlZ/DnezBujq6uLx1avZf6/+PwR37NgJwO/Wre33ti/8aUe/t7HW5HBvUW1tbWzWZnadtmtIjzti2QjaxrUN6THzav+9RjHlsNcP6TGX/37rkB7PGsfh3sq2ZWHbb9vT/4EMz2wDxg1gOzMbUg73FjWY7xUpjNlOHDex/xuPG9yxzWxoONxb1GDeECts6++UMcsvh7s1hZtvvpn58+czY8YMZs6c2ehy6q67u5sX/rRjyMfAX/jTDp/tNEz4E6rWFObPnw9AZ2dngyt5zRVXXMEpp5xCR0dHo0sx6zf33IehjRs38vzzz9PR0cFll13W6HK4+eabe7Rvu+22pui9L126FIBFixbV/Hpqa2tj5wvPNeRsmbY2n+00HDjch6Hnn38eqE9oDUSh117Q2dnZ8HC/4oorerTr8UQ40GGZl9J57vuNGjmgYw4Xp5xyyu7phx56qIGVvGYoa6pLuEt6H/BlYCTw9Yi4ph7Hsf4bitDKg0KvvaDWT4S1ONvpqIkDONtpkMe21qHiX+WpyQ6lkcB64EygG3gE+FhE/LLcNpMnT44VK1bUtI5amjt3Lj/4wQ9KLnvllVfYtav8B4kKy0aMKP32xogRI9h7773Lbj9t2rQBnRlT7uPtq1at2mPepEmT9phXj4+oN2NN5RT3sAqapffns5361oy3Xz1qkrQyIiaXWlaPnvsUoCsiNqaD3wlMB8qGe7FKQfrSSy8xmCcjSey3335llw8kSHfu3FlVTeWeAGr95NpIlW476N/tVyrwV69eXXb/lW67Wt2nSj04K92nav3EXNDXd8sM9EmwGR97tbxP1er2a8aaSqlHuI8DnihqdwN/3nslSbOAWQBHHnlkHcqonUsuuaRicFR6IBZOOyv3Jla9eqPl9lnqzjRUPcCRI0eWfJIrNa/UK51yr36Gm3333bfRJVgLqMewzLnAf42IC1L7E8CUiLi43DbNPiyTJ834cvX8889n06ZNu9sTJkxg3rx5jSuI5ryerHrNePsN9bBMPbpC3cD4onYb8FQdjmMDcNxxx/Vov/3tb29QJa+5/fbbe7QbHexmeVCPcH8EmCjpjZL2Aj4KLKjDcWwAep9T/tWvfrVBlfTU3t4ONM+ZHL17VI3u9Vn/NOPtN9Q11XzMPSJ2SPofwP1kp0LOi4j+f/G01c1xxx3HunXrmqLXXtC7925mg1PzMfeB8Ji7mVn/DfWYu5mZNZjD3cwshxzuZmY55HA3M8uhpnhDVdJm4Hc12t2hwJYa7atWXFN1XFP1mrEu11SdWtZ0VESMLbWgKcK9liStKPfucaO4puq4puo1Y12uqTpDVZOHZczMcsjhbmaWQ3kM91saXUAJrqk6rql6zViXa6rOkNSUuzF3MzPLZ8/dzGzYc7ibmeVQQ8Nd0j9KWitpjaRVkvb4xaYB7PMDkj5fo/q2F03vTDU+Lunbksr+Zpik2ZI+V4saBkrSByWFpDc3sIY9bl9JX5f0lrR8e5ntTpL0cNpmnaTZNaqn6tuwH/v8pKSv1KK+tL9CjYW/9lrteyhJOk3SfQ08/p9JulPSbyT9UtJCScc0qp5UU5ukeyVtkLRR0lcklf8B5UFqWLhLejfwl8AJEXE8MJWeP89XaduyX1UcEQsi4praVNnDyxExKSLeBvwJ+Ls6HKOWPgb8O9n36Q+5crdvRFxQ6cfSk05gVkRMAt4G3F2jsgZ8G6Yffh8KhRoLf5uq2WgI62t6kgR8D1gWEW+KiLcAXwAOa3BN3wW+HxETgYnAvsA/1+uYjey5Hw5siYhXACJiS0Q8JWmTpEMBJE2WtCxNz5Z0i6QHgNtTz+6thZ1JWibpxEJPStKBaV8j0vL9JD0habSkN0n6oaSVkn5c6N2mHxj5maRHJHVUqP3HwIS0zfmpZ7pa0h29V5T0t2l/qyXdU+gtSjo39SBXS3oozXurpOWpx7ZG0sSBXLGSxgAnAzNJ4S5phKSbUk/6vtSTOSctO1HSj9L1cb+kwwdy3F7K3b7LJO3+AIekf5H0C0lLJBU+afcG4Om03c7Ck0G6D9wh6cHU+/nbQdRXfBt+P132tcp+27dQ23ZJV0p6GHi3pHdJ+mm6zZZL2j+tekS6P22QVPMHq6T2dD/9Rfr7izT/NElLJX0LeCzN+3jRfejmwYR+Ou6vlL3aelzSfElTJf0kXdYp6e+nkh5N/48tsZ/XSZqXHgePSpo+4CujOqcDr0bE/ynMiIhVEfHjOh+3kvcAf4yIb6R6dgKfBs5Pj9fai4iG/AFjgFXAeuAm4NQ0fxNwaJqeTPbsCzAbWAnsm9qfBr6Ypg8H1qfpTwJfSdP3Aqen6Y8AX0/TS4CJafrPgQfT9ALg/DR9EbC9qN7t6f+otN//BrwV+HVRvQcX1fq5NH1I0T7mABen6ceAcWn6oPT/RuC8NL1X4bIO4Lr9OHBbmv4pcAJwDrCQ7An9z4Ctad7otM7YoutpXh1v32XA5DQdRZf38qLb7fJU3/eAC4F9iq7X1WQ9nkPJXukd0Y+a9rgNe91u+wKPF26zVN+Hi26PjcC7UvuAtJ9PpvkHAvuQfY3G+EFcbzvT9bYK+F6at1/RdTARWJGmTwNeBN6Y2scB/waMTu2bSPfnAdbSDuwA3p7uNyuBeYCA6cD3C9dDWn8qcE9Rbfel6auBjxfu6+k+8brB3scq1H0JcH299l/LmoBHgUn1OGbNf4mpWhGxXdKJwH8he6a9S32PlS+IiJfT9N3AIuAK4MPAt0usfxdZWC0l68HelJ4l/wL4dvZKCYDCuNfJwIfS9B3AtUX72lfSqjT9Y+A2suD5TkRsSZfpDyVqeJukOWR36jFkv1AF8BPgm5LuJnu5BvAz4B8ltQHfjYgNFa6LSj4G3JCm70zt0cC3I2IX8J+Slqblx5INfSxK18dIUq95MKq8fXeR3UYA/5d0PUTElZLmA+8F/jrVf1pa7950H3g5XYYpZCFTjVK3IcAlkj6YpseTBeizZEF7T5p/LPB0RDySanweIF1nSyLiudT+JXAUVQ4xlvByZMNRxUYDX5E0KdVUPHa8PCJ+m6bPAE4EHkl17Qs8M8A6Cn4bEYVXBWvJLmtIeows/A8EOtOrzEi19vZe4AN67X2ofYAjgXWDrK2ViOz6KTW/LhoW7rD7pckyYFm6s8wg6ykUhov26bXJi0XbPinpWUnHkwX4hSUOsQD4J0kHk93pHwReB2wr8QDavesy8/d40Cl7BPX1QYFvAmdHxGpJnySFVET8nbI3kN8PrJI0KSK+lYYA3g/cL+mCiHiwj/33IOkQspeAb5MUZGEdZL3gkpsAayPi3f05TjXK3L4VNyna9jfA1yTdCmxOl6vHOmXalZS6DU8j63G+OyJeUjYMWLjf/TFdBij/4AR4pWh6J7V/XH0a+D3wDrLHxh+Llr1YNC2gMyL+oYbHLr5su4rau8guZwewNCI+qOzN32Ul9iHgQxHx6xrWVclaslelzWQtr3UcAZB0ANn7AHW5Xhr5huqxvcaUJ5G9pN1EFsTQ68oo4U7g74EDC72LYhGxHVgOfJnsJeLO1OP6raRzUx2S9I60yU947Q3I86q4GEuADxeCJz2J9LY/8LSk0cX7lPSmiHg4Ii4n+4a48ZKOBjZGxFyyJ6bjq6iht3OA2yPiqIhoj4jxwG/TMT6kbOz9MF7rCf8aGKvsDVCUvSfx1lI77o8Kt2+xEbz2IPxrsjeAkfR+vfayaiJZYG5L7emS9knX+WlkP8g+GAcCW1Owvxk4qcx6vyIbW39XqnF/VXhjv8YOJHvVsAv4BNkTdilLgHMkvSHVeLCko4agtifT9CfLrHM/cHHhNpX0zjrX9CCwt4rek0nvl5xa5+NWsgTYT9L5qZ6RwL+QDUW+XHHLAWrkG6pjyF7O/VLSGuAtZGOqXwS+LOnHZA/qSr5DFsaVzqa4i2wM+q6ieecBMyWtJntGLbzB8yngIkmPkN1pK4rsh7+vAn6U9nVdidUuAx4mG0L6VdH8L0l6TNLjwENkY8kfAR5PQwdvBgbyq9EfY89e+j3AEUA32Zjyzamm5yLiT2QBe226DKvIhq0Gq9ztW+xF4K2SVpK92rgyzf8E8Ot0PdxBNi5fuC8sB/4f8HOgIyKeGmSdPwRGpRo70n73kK6njwA3putpEXu+sqyXm4AZkn5ONiTzYqmVInvj+VLggXR5FpG9H1VP/0z26vgnlH/S6SAbrlmT7u+VTlYYtMgGsz8InKnsVMi1ZPe9wd5XalHTOZI2kA377YqIq+p1TH/9wDAiaUwaCz+ELCRPjoj/bHRd1VJ2vvv2iPjfja7FbDCUnfH0r8BfRcTKehyjoWPuNuTuk3QQ2ZkfHa0U7GZ5EhE/JXvjvW7cczczyyF/t4yZWQ453M3McsjhbmaWQw53M7MccribmeXQ/wd99Atk0yphowAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘制箱型图\n",
    "sns.boxplot(data=Train_set_num)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAPcklEQVR4nO3db2xdd33H8fc3SaHpslFKTFWcdGY40piE+GdVlXjSuuuUttPSB1QCVWsEgTzpUCcGW1cqNYW0Kk9WQpnQohSWTt2gYkONULWtqoOqPYDhjK78KVvvqkDdZE2gaSFkgJx+98A/F9s5tq8dO+feX98vybrn+zs/+34tJZ/89Mu550RmIkmqy5q2G5AkrTzDXZIqZLhLUoUMd0mqkOEuSRVa13YDABs3bsyhoaG225CkvnLo0KEfZ+ZA07meCPehoSHGx8fbbkOS+kpE/HC+c27LSFKFDHdJqpDhLkkVMtwlqUKGuzSP8fFxRkdHOXToUNutSEtmuEvz2LVrFy+//DJ33HFH261IS2a4Sw3Gx8c5efIkACdPnnT1rr5juEsNdu3aNat29a5+Y7hLDaZX7fPVUq8z3KUGGzZsWLCWel1X4R4RhyPiOxHxRESMl7GLIuLRiHi6vL6+jEdEfDYiOhHxZES8azV/AWk1zN2WufPOO9tpRFqmpazcr8zMd2TmSKlvBR7LzC3AY6UGuAbYUr52Ap9fqWalc2VkZOSV1fqGDRt497vf3XJH0tKczbbMNmB/Od4PXD9j/IGc8g3gwoi45CzeR2rFrl27WLNmjat29aVu7wqZwL9GRAJ/k5l7gYsz8yhAZh6NiDeWuYPAszO+d6KMHZ35AyNiJ1Mrey699NLl/wbSKhkZGWFsbKztNqRl6Tbc35OZR0qAPxoRP1hgbjSM5RkDU/9A7AUYGRk547wkafm62pbJzCPl9RjwVeAy4Pnp7ZbyeqxMnwA2z/j2TcCRlWpYkrS4RcM9In4jIn5z+hj4A+C7wAFge5m2HXi4HB8AbipXzVwOvDS9fSNJOje62Za5GPhqREzP//vM/OeI+BbwUETsAH4E3FDmPwJcC3SAU8AHVrxrSdKCFg33zHwGeHvD+E+AqxrGE7h5RbqTJC2Ln1CVpAoZ7pJUIcNdkipkuEtShQx3SaqQ4S5JFTLcJalChrskVchwl6QKGe6SVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqpDhLkkVMtwlqUKGuyRVyHCXpAoZ7pJUIcNdkipkuEtShQx3SapQ1+EeEWsj4tsR8bVSvzkivhkRT0fElyPiNWX8taXulPNDq9O6JGk+S1m53wI8NaP+NHBvZm4BTgA7yvgO4ERmDgP3lnmSpHOoq3CPiE3AdcC+UgcwCnylTNkPXF+Ot5Wacv6qMl+SdI50u3L/DPDnwMulfgPwYmZOlnoCGCzHg8CzAOX8S2W+JOkcWTTcI+IPgWOZeWjmcMPU7OLczJ+7MyLGI2L8+PHjXTUrSepONyv39wB/FBGHgS8xtR3zGeDCiFhX5mwCjpTjCWAzQDn/OuCFuT80M/dm5khmjgwMDJzVLyFJmm3RcM/Mv8zMTZk5BLwPGMvMG4GDwHvLtO3Aw+X4QKkp58cy84yVuyRp9ZzNde5/AXw0IjpM7anfX8bvB95Qxj8K3Hp2LUqSlmrd4lN+LTO/Dny9HD8DXNYw5xfADSvQmyRpmfyEqiRVyHCXpAoZ7pJUIcNdkipkuEtShQx3SaqQ4S5JFTLcJalChrskVchwl6QKGe6SVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqpDhLkkVMtwlqUKGuyRVyHCXpAoZ7pJUIcNdkipkuEtShQx3SarQouEeEedHxL9HxH9GxPci4s4y/uaI+GZEPB0RX46I15Tx15a6U84Pre6vIEmaq5uV+y+B0cx8O/AOYGtEXA58Grg3M7cAJ4AdZf4O4ERmDgP3lnmSpHNo0XDPKSdLeV75SmAU+EoZ3w9cX463lZpy/qqIiBXrWJK0qK723CNibUQ8ARwDHgX+B3gxMyfLlAlgsBwPAs8ClPMvAW9o+Jk7I2I8IsaPHz9+dr+FJGmWrsI9M09n5juATcBlwFubppXXplV6njGQuTczRzJzZGBgoNt+JUldWNLVMpn5IvB14HLgwohYV05tAo6U4wlgM0A5/zrghZVoVpLUnW6ulhmIiAvL8Xrg94GngIPAe8u07cDD5fhAqSnnxzLzjJW7JGn1rFt8CpcA+yNiLVP/GDyUmV+LiO8DX4qI3cC3gfvL/PuBv4uIDlMr9vetQt+SpAUsGu6Z+STwzobxZ5jaf587/gvghhXpTpK0LH5CVZIqZLhLUoUMd0mqkOEuSRUy3KV5jI2NccUVV3Dw4MG2W5GWzHCX5nHXXXcBsHv37pY7kZbOcJcajI2Ncfr0aQBOnz7t6l19x3CXGkyv2qe5ele/MdylBtOr9vlqqdcZ7pJUIcNdarBx48YFa6nXGe5Sg3vuuWfBWup1hrskVchwlxrMvTrGq2XUbwx3qcHhw4cXrKVeZ7hLDYaGhhaspV5nuEsNbr/99gVrqdcZ7lKD4eHhV1brQ0NDDA8Pt9uQtESGuzSPq6++GoCtW7e23Im0dIa7NI8vfvGLAOzbt6/lTqSlM9ylBmNjY0xOTgIwOTnpXSHVdwx3qcHdd989q557l0ip1xnuUoPpVft8tdTrDHepQUQsWEu9znCXGpx33nkL1lKvM9ylBnMvf7zmmmta6kRaHsNdavCWt7xlVu2HmNRvDHepwX333Ter3rNnT0udSMtjuEsNvFpG/c5wlxqsW7duwVrqdYuGe0RsjoiDEfFURHwvIm4p4xdFxKMR8XR5fX0Zj4j4bER0IuLJiHjXav8S0kq77bbbZtWf+MQnWupEWp5uVu6TwJ9l5luBy4GbI+L3gFuBxzJzC/BYqQGuAbaUr53A51e8a2mVjY6OvrJaX7duHVdeeWXLHUlLs2i4Z+bRzPyPcvwz4ClgENgG7C/T9gPXl+NtwAM55RvAhRFxyYp3Lq2y6dW7q3b1oyVtJEbEEPBO4JvAxZl5FKb+AYiIN5Zpg8CzM75toowdnfOzdjK1sufSSy9dRuvS6hodHWV0dLTtNqRl6fo/VCNiA/CPwJ9m5k8XmtowlmcMZO7NzJHMHBkYGOi2DUlSF7oK94g4j6lgfzAz/6kMPz+93VJej5XxCWDzjG/fBBxZmXYlSd3o5mqZAO4HnsrMv5px6gCwvRxvBx6eMX5TuWrmcuCl6e0bSdK50c2e+3uAPwa+ExFPlLHbgHuAhyJiB/Aj4IZy7hHgWqADnAI+sKIdS5IWtWi4Z+a/0byPDnBVw/wEbj7LviRJZ8FPqEpShQx3SaqQ4S5JFTLcpXl0Oh2uu+46Op1O261IS2a4S/PYvXs3P//5z9m9e3fbrUhLZrhLDTqdDocPHwbg8OHDrt7Vdwx3qcHc1bqrd/Ubw11qML1qn6+Wep3hLjUYGhpasJZ6neEuNbj99tsXrKVeZ7hLDQ4ePDirfvzxx1vqRFoew11q8OCDD86qH3jggZY6kZbHcJekChnuklQhw12SKmS4Sw28FFL9znCXGngppPqd4S418FJI9TvDXWrgpZDqd4a7JFXIcJekChnuUoMbb7xxVn3TTTe11Im0PIa71ODDH/7wrPqDH/xgS51Iy2O4Sw3GxsZm1XOvnpF6neEuNbj77rtn1XfddVdLnUjLY7hLDSYnJxespV5nuEtShQx3SaqQ4S5JFVo03CPiCxFxLCK+O2Psooh4NCKeLq+vL+MREZ+NiE5EPBkR71rN5iVJzbpZuf8tsHXO2K3AY5m5BXis1ADXAFvK107g8yvTpiRpKRYN98x8HHhhzvA2YH853g9cP2P8gZzyDeDCiLhkpZqVzpVLLpn9x/ZNb3pTS51Iy7PcPfeLM/MoQHl9YxkfBJ6dMW+ijJ0hInZGxHhEjB8/fnyZbUir41Of+tSs+pOf/GRLnUjLs9L/oRoNY9k0MTP3ZuZIZo4MDAyscBuS9Oq23HB/fnq7pbweK+MTwOYZ8zYBR5bfntSOj33sY7Pqj3/84y11Ii3PcsP9ALC9HG8HHp4xflO5auZy4KXp7Rupn7z44ouz6hMnTrTUibQ86xabEBH/AFwBbIyICeAO4B7goYjYAfwIuKFMfwS4FugAp4APrELPkqRFLBrumfn+eU5d1TA3gZvPtilJ0tnxE6qSVCHDXZIqZLhLUoUMd0mqkOEuSRUy3CWpQoa7JFVo0evc9epz33330el02m6j59xyyy1tt9Cq4eFhPvKRj7Tdhrrkyl2SKuTKXWdwdQadTocPfehDr9T79u1jeHi4xY6kpXHlLjWYGeTnn3++wa6+Y7hL89iyZQtr1qzhc5/7XNutSEtmuEvzuOCCC3jb297mql19yXCXpAoZ7pJUIcNdkipkuEtShQx3SaqQ4S5JFTLcJalC3n6g8GZZmmv6z8Or/YZhOlM/3ETNcC86nQ5PfPcpTl9wUdutqEes+VUCcOiZ51vuRL1k7akX2m6hK4b7DKcvuIj/+91r225DUg9b/4NH2m6hK+65S1KFDHdJqpDhLkkVcs+9eO6551h76qW+2U+T1I61p37Cc89Ntt3Goly5S1KFXLkXg4OD/O8v13m1jKQFrf/BIwwOXtx2G4sy3GdYe+oFt2X0ijW/+CkAL5//Wy13ol4ydZ37qzTcI2IrsAdYC+zLzHtW431Wkk/b0Vydzs8AGP6d3v+LrHPp4r7IixUP94hYC/w1cDUwAXwrIg5k5vdX+r1WUq9/lFjn3vRtB/bs2dNyJ9LSrcbK/TKgk5nPAETEl4BtQE+Hu37N++xM8d4ys/XD/VT0a6txtcwg8OyMeqKMzRIROyNiPCLGjx8/vgptSGdn/fr1rF+/vu02pGVZjZV7NIzlGQOZe4G9ACMjI2ecV3tcnUn9bzVW7hPA5hn1JuDIKryPJGkeqxHu3wK2RMSbI+I1wPuAA6vwPpKkeaz4tkxmTkbEnwD/wtSlkF/IzO+t9PtIkua3Kte5Z+YjgJ8GkqSWeG8ZSaqQ4S5JFTLcJalChrskVSgy2//8UEQcB37Ydh9Sg43Aj9tuQprHb2fmQNOJngh3qVdFxHhmjrTdh7RUbstIUoUMd0mqkOEuLWxv2w1Iy+GeuyRVyJW7JFXIcJekChnu0jwiYmtE/FdEdCLi1rb7kZbCPXepQXnQ+38z40HvwPt7/UHv0jRX7lKzVx70npm/AqYf9C71BcNdatbVg96lXmW4S826etC71KsMd6mZD3pXXzPcpWY+6F19bVWeoSr1Ox/0rn7npZCSVCG3ZSSpQoa7JFXIcJekChnuklQhw12SKmS4S1KFDHdJqtD/A+5XyZji+T31AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.boxplot(data = Train_set.Fare)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "#可以看出付钱超过100的人存活几率也高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>106.4250</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>108.9000</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>110.8833</th>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>113.2750</th>\n",
       "      <td>0.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>120.0000</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>133.6500</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>134.5000</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>135.6333</th>\n",
       "      <td>0.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>146.5208</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>151.5500</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>153.4625</th>\n",
       "      <td>0.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>164.8667</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>211.3375</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>211.5000</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>221.7792</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>227.5250</th>\n",
       "      <td>0.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>247.5208</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>262.3750</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>263.0000</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>512.3292</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          Survived\n",
       "Fare              \n",
       "106.4250  0.500000\n",
       "108.9000  0.500000\n",
       "110.8833  0.750000\n",
       "113.2750  0.666667\n",
       "120.0000  1.000000\n",
       "133.6500  1.000000\n",
       "134.5000  1.000000\n",
       "135.6333  0.666667\n",
       "146.5208  1.000000\n",
       "151.5500  0.500000\n",
       "153.4625  0.666667\n",
       "164.8667  1.000000\n",
       "211.3375  1.000000\n",
       "211.5000  0.000000\n",
       "221.7792  0.000000\n",
       "227.5250  0.750000\n",
       "247.5208  0.500000\n",
       "262.3750  1.000000\n",
       "263.0000  0.500000\n",
       "512.3292  1.000000"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set_Fare100=Train_set[Train_set.Fare >100]\n",
    "Train_set_Fare100[[\"Fare\", \"Survived\"]].groupby(\"Fare\").mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare_class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Embarked Fare_class  \n",
       "0      0         A/5 21171   7.2500        S          0  \n",
       "1      0          PC 17599  71.2833        C          4  \n",
       "2      0  STON/O2. 3101282   7.9250        S          0  \n",
       "3      0            113803  53.1000        S          2  \n",
       "4      0            373450   8.0500        S          0  "
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fare_classes = []\n",
    "for fare in Train_set[\"Fare\"]:\n",
    "    if fare < 10:\n",
    "        fare_classes.append('0')\n",
    "    elif fare < 25:\n",
    "        fare_classes.append('1')\n",
    "    elif fare < 55:\n",
    "        fare_classes.append('2')\n",
    "    elif fare < 70:\n",
    "        fare_classes.append('3')\n",
    "    elif fare < 100:\n",
    "        fare_classes.append('4')\n",
    "    else:\n",
    "        fare_classes.append('5')\n",
    "        \n",
    "Train_set[\"Fare_class\"] = fare_classes\n",
    "Train_set.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Fare_class</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.199405</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.420814</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.435233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.611111</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.711538</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.735849</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Survived\n",
       "Fare_class          \n",
       "0           0.199405\n",
       "1           0.420814\n",
       "2           0.435233\n",
       "3           0.611111\n",
       "4           0.711538\n",
       "5           0.735849"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set[[\"Fare_class\", \"Survived\"]].groupby(\"Fare_class\").mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAQdElEQVR4nO3dbYxc5XnG8f/Nbixs2gh7vVjUtmqitRKs8pJ2hNJGstKAK6etgj8kFbRqVpUVf2mN01RqaL8AiiMRqWpMrCaSFdJupDSBUpBRhNwaF1RVqmjWCWDeUi8vwQaCJwZCCm1g7bsf9hjs9Xr3zO7MzjzM/ydZZ56zZ3QuJHPxcPac80RmIkkqz3ndDiBJmh8LXJIKZYFLUqEscEkqlAUuSYUaXMyTrVy5MtetW7eYp5Sk4h08ePCnmTk8ff+iFvi6desYHx9fzFNKUvEi4scz7fcSiiQVygKXpEJZ4JJUKAtckgplgavvHT9+nBtuuIHjx493O4rUkloFHhF/HhGPR8RjEfGdiDg/Ii6JiIci4nBE3BERSzodVuqEsbExDh06xLe+9a1uR5FaMmeBR8Rq4AagkZm/BgwA1wFfBr6SmeuBV4GtnQwqdcLx48fZt28fmcm+ffuchasodS+hDAJLI2IQWAa8BHwcuKv6+Riwpf3xpM4aGxvj5MmTAJw4ccJZuIoyZ4Fn5gvA3wDPM1XcPwMOAq9l5mR12FFg9Uzfj4htETEeEePNZrM9qaU2uf/++5mcnPprPDk5yf79+7ucSKqvziWU5cC1wCXArwAXAJ+Y4dAZV4bIzD2Z2cjMxvDwWU+CSl11zTXXMDg49UDy4OAgmzZt6nIiqb46l1CuAZ7NzGZmvg3cDfwWcGF1SQVgDfBihzJKHTM6Osp55039azAwMMBnPvOZLieS6qtT4M8DH4mIZRERwNXAE8ADwKeqY0aBvZ2JKHXO0NAQmzdvJiLYvHkzQ0ND3Y4k1VbnGvhDTP2y8gfAoeo7e4AvAJ+PiAlgCLi9gzmljhkdHeWyyy5z9q3ixGIuatxoNNK3EUpSayLiYGY2pu/3SUxJKpQFLkmFssAlqVAWuCQVygKXpEJZ4Op7vk5WpbLA1fd8naxKZYGrr/k6WZXMAldf83WyKpkFrr7m62RVMgtcfc3XyapkFrj6mq+TVckscPU1Xyerklng6nsbN24kIti4cWO3o0gtscDV93bt2sXJkyfZtWtXt6NILbHA1dcmJiY4evQoAEeOHGFiYqLLiaT66ixq/MGIePi0P69HxOciYkVE7I+Iw9V2+WIEltrp5ptvPmN8yy23dCeINA91llT7UWZemZlXAr8BvAncA9wIHMjM9cCBaiwV5dTs+5QjR450KYnUulYvoVwNPJ2ZPwauBcaq/WPAlnYGkyTNrtUCvw74TvV5VWa+BFBtL5rpCxGxLSLGI2K82WzOP6kk6Qy1CzwilgCfBP6plRNk5p7MbGRmY3h4uNV8UketXbt21rHUy1qZgX8C+EFmvlyNX46IiwGq7bF2h5M67aabbpp1LPWyVgr8et69fAJwLzBafR4F9rYrlLRYRkZG3pl1r127lpGRkS4nkuqrVeARsQzYBNx92u5bgU0Rcbj62a3tjyd13k033cQFF1zg7FvFicxctJM1Go0cHx9ftPNJ0ntBRBzMzMb0/T6Jqb7nmpgqlQWuvueamCqVBa6+5pqYKpkFrr42NjbG22+/DcBbb73lLFxFscDV1+6//35O/SI/M10TU0WxwNXXLr/88jPGV1xxRZeSSK2zwNXXDh06dMb40Ucf7VISqXUWuPraG2+8MetY6mUWuPpaRMw6lnqZBa6+Nv1J5MV8MllaKAtcfW1wcHDWsdTLLHD1tcnJyVnHUi+zwNXXVq5cOetY6mUWuPraq6++OutY6mUWuPraiRMnZh1LvcwCl6RC1V2R58KIuCsinoqIJyPiNyNiRUTsj4jD1XZ5p8NKkt5VdwZ+G7AvMz8EXAE8CdwIHMjM9cCBaiwV5fzzz591LPWyOQs8It4PbARuB8jMtzLzNeBaYKw6bAzY0qmQUqecepXsucZSL6szA/8A0AT+PiJ+GBHfiIgLgFWZ+RJAtb1opi9HxLaIGI+I8Waz2bbgUjv4S0yVrE6BDwK/Dnw9Mz8MvEELl0syc09mNjKzMTw8PM+YkqTp6hT4UeBoZj5Uje9iqtBfjoiLAartsc5ElCTNZM4Cz8yfAEci4oPVrquBJ4B7gdFq3yiwtyMJpQ5avvzMm6dWrFjRpSRS6+q+uWc78O2IWAI8A/wJU+V/Z0RsBZ4HPt2ZiFLnTH/y8pVXXulSEql1tQo8Mx8GGjP86Or2xpEk1eWTmJJUKAtckgplgauv+TpZlcwCV1/zdbIqmQWuvuaTmCqZBS5JhbLAJalQFrj62po1a84Yr127tktJpNbVfRJT7zG7d+9mYmKi2zG6bunSpWeNd+zY0aU0vWFkZITt27d3O4ZqcAauvrZs2bJ3Pi9ZsuSsQpd6mTPwPuUM612f/exnefrpp/na177GyMhIt+NItTkDV99btmwZl112meWt4ljgklQoC1ySCmWBS1KhLHBJKlStu1Ai4jng58AJYDIzGxGxArgDWAc8B/xBZvomIElaJK3MwH87M6/MzFMr89wIHMjM9cABWlipXpK0cAu5hHItMFZ9HgO2LDyOJKmuugWewL9GxMGI2FbtW5WZLwFU24tm+mJEbIuI8YgYbzabC08sSQLqP4n50cx8MSIuAvZHxFN1T5CZe4A9AI1GI+eRUZI0g1oz8Mx8sdoeA+4BrgJejoiLAartsU6FlCSdbc4Cj4gLIuKXT30Gfgd4DLgXGK0OGwX2diqkJOlsdS6hrALuiYhTx/9jZu6LiO8Dd0bEVuB54NOdiylJmm7OAs/MZ4ArZth/HLi6E6EkSXPzSUxJKpQFLkmFssAlqVAWuCQVygKXpEJZ4JJUKAtckgplgUtSoSxwSSqUBS5JhbLAJalQFrgkFcoCl6RCWeCSVCgLXJIKVbvAI2IgIn4YEd+rxpdExEMRcTgi7oiIJZ2LKUmarpUZ+A7gydPGXwa+kpnrgVeBre0MJkmaXa0Cj4g1wO8B36jGAXwcuKs6ZAzY0omAkqSZ1Z2B7wL+EjhZjYeA1zJzshofBVa3OZskaRZ1VqX/feBYZh48ffcMh+Y5vr8tIsYjYrzZbM4zpiRpujoz8I8Cn4yI54DvMnXpZBdwYUScWhR5DfDiTF/OzD2Z2cjMxvDwcBsiS5KgRoFn5l9l5prMXAdcB/xbZv4R8ADwqeqwUWBvx1JKks6ykPvAvwB8PiImmLomfnt7IkmS6hic+5B3ZeaDwIPV52eAq9ofSZJUh09iSlKhLHBJKpQFLkmFssAlqVAWuCQVygKXpEK1dBth6Xbv3s3ExES3Y6jHnPo7sWPHji4nUa8ZGRlh+/bt3Y5xTn1V4BMTEzz82JOcWLai21HUQ857a+o1PgefebnLSdRLBt58pdsR5tRXBQ5wYtkK/vdDv9vtGJJ63NKn7ut2hDl5DVySCmWBS1KhLHBJKpQFLkmFssAlqVAWuCQVygKXpELVWdT4/Ij4r4h4JCIej4hbqv2XRMRDEXE4Iu6IiCWdjytJOqXODPwXwMcz8wrgSmBzRHwE+DLwlcxcD7wKbO1cTEnSdHM+iZmZCfxPNXxf9SeZWp3+D6v9Y8DNwNfbH7F9XnjhBQbe/FkRT1hJ6q6BN4/zwguT3Y4xq1rXwCNiICIeBo4B+4Gngdcy89Q/3VFg9Tm+uy0ixiNivNlstiOzJIma70LJzBPAlRFxIXAPcOlMh53ju3uAPQCNRmPGYxbL6tWr+ckvBn0XiqQ5LX3qPlavXtXtGLNq6S6UzHyNqVXpPwJcGBGn/gOwBnixvdEkSbOpcxfKcDXzJiKWAtcATwIPAJ+qDhsF9nYqpCTpbHUuoVwMjEXEAFOFf2dmfi8ingC+GxE7gR8Ct3cwpyRpmjp3oTwKfHiG/c8AV3UilCRpbj6JKUmFssAlqVAWuCQVygKXpEJZ4JJUKAtckgplgUtSoSxwSSqUBS5JhbLAJalQFrgkFcoCl6RCWeCSVKhaK/K8lwy8+YprYuoM5/3f6wCcPP/9XU6iXjLw5itAb6/I01cFPjIy0u0I6kETEz8HYOQDvf0vqxbbqp7vjL4q8O3bt3c7gnrQjh07ALjtttu6nERqTZ0l1dZGxAMR8WREPB4RO6r9KyJif0QcrrbLOx9XknRKnV9iTgJ/kZmXMrWY8Z9GxAbgRuBAZq4HDlRjSdIimbPAM/OlzPxB9fnnTC1ovBq4FhirDhsDtnQqpCTpbC3dRhgR65haH/MhYFVmvgRTJQ9cdI7vbIuI8YgYbzabC0srSXpH7QKPiF8C/hn4XGa+Xvd7mbknMxuZ2RgeHp5PRknSDGoVeES8j6ny/nZm3l3tfjkiLq5+fjFwrDMRJUkzqXMXSgC3A09m5t+e9qN7gdHq8yiwt/3xJEnnUuc+8I8CfwwcioiHq31/DdwK3BkRW4HngU93JqIkaSZzFnhm/gcQ5/jx1e2NI0mqy5dZSVKhLHBJKpQFLkmFssAlqVAWuCQVygKXpEJZ4JJUKAtckgplgUtSoSxwSSqUBS5JhbLAJalQFrgkFcoCl6RCWeCSVCgLXJIKVWdJtW9GxLGIeOy0fSsiYn9EHK62yzsbU5I0XZ0Z+D8Am6ftuxE4kJnrgQPVWJK0iOYs8Mz8d+CVabuvBcaqz2PAljbnkiTNYb7XwFdl5ksA1faicx0YEdsiYjwixpvN5jxPJ0maruO/xMzMPZnZyMzG8PBwp08nSX1jvgX+ckRcDFBtj7UvkiSpjvkW+L3AaPV5FNjbnjiSpLrq3Eb4HeA/gQ9GxNGI2ArcCmyKiMPApmosSVpEg3MdkJnXn+NHV7c5iySpBT6JKUmFssAlqVAWuCQVygKXpEJZ4JJUKAtckgplgUtSoSxwSSqUBS5JhbLAJalQFrj63rPPPssjjzzCl770pW5HkVoy57tQ9N60e/duJiYmuh2jJ7z++usA7N+/n2PHfDPyyMgI27dv73YM1eAMXH3t2WefPWP83HPPdSeINA+RmYt2skajkePj44t2PmkuH/vYx87a9+CDDy56Dmk2EXEwMxvT9zsDl6RCWeCSVKgFFXhEbI6IH0XERETc2K5QkqS5zbvAI2IA+DvgE8AG4PqI2NCuYJKk2S1kBn4VMJGZz2TmW8B3gWvbE0uSNJeFFPhq4Mhp46PVvjNExLaIGI+I8WazuYDTSe136aWXnjHesMH/iVQ5FlLgMcO+s+5JzMw9mdnIzMbw8PACTie1386dO88Yf/GLX+xSEql1Cynwo8Da08ZrgBcXFkdaXENDQ+/Mwjds2MDQ0FCXE0n1LaTAvw+sj4hLImIJcB1wb3tiSYtn586dXH755c6+VZx5vwslMycj4s+AfwEGgG9m5uNtSyYtkqGhIb761a92O4bUsgW9zCoz7wPua1MWSVILfBJTkgplgUtSoSxwSSrUor5ONiKawI8X7YRSfSuBn3Y7hHQOv5qZZz1Is6gFLvWqiBif6X3LUi/zEookFcoCl6RCWeDSlD3dDiC1ymvgklQoZ+CSVCgLXJIKZYGr77m2q0rlNXD1tWpt1/8GNjH1jvvvA9dn5hNdDSbV4Axc/c61XVUsC1z9rtbarlIvssDV72qt7Sr1Igtc/c61XVUsC1z9zrVdVawFLakmlc61XVUybyOUpEJ5CUWSCmWBS1KhLHBJKpQFLkmFssAlqVAWuCQVygKXpEL9PzvAa78aaLEMAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#绘制年龄的箱型图\n",
    "sns.boxplot(data = Train_set.Age)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "#可以看出年龄越大或年龄越小存活率高"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare_class</th>\n",
       "      <th>Age_class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Embarked Fare_class Age_class  \n",
       "0      0         A/5 21171   7.2500        S          0         1  \n",
       "1      0          PC 17599  71.2833        C          4         2  \n",
       "2      0  STON/O2. 3101282   7.9250        S          0         1  \n",
       "3      0            113803  53.1000        S          2         2  \n",
       "4      0            373450   8.0500        S          0         2  "
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "age_classes = []\n",
    "for age in Train_set[\"Age\"]:\n",
    "    if age < 16:\n",
    "        age_classes.append('0')\n",
    "    elif age < 32:\n",
    "        age_classes.append('1')\n",
    "    elif age < 48:\n",
    "        age_classes.append('2')\n",
    "    elif age < 70:\n",
    "        age_classes.append('3')\n",
    "    else:\n",
    "        age_classes.append('4')\n",
    "        \n",
    "Train_set[\"Age_class\"] = age_classes\n",
    "Train_set.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Age_class</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.590361</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.339080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.401015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.439024</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.142857</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Survived\n",
       "Age_class          \n",
       "0          0.590361\n",
       "1          0.339080\n",
       "2          0.401015\n",
       "3          0.439024\n",
       "4          0.142857"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set[[\"Age_class\", \"Survived\"]].groupby(\"Age_class\").mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "#（0表示16岁以下，1表示16-32,2表示32-48,3表示48-70,4表示其它）\n",
    "#可以 看出他们的存活概率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SibSp</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.345395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.535885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.464286</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.166667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Survived\n",
       "SibSp          \n",
       "0      0.345395\n",
       "1      0.535885\n",
       "2      0.464286\n",
       "3      0.250000\n",
       "4      0.166667\n",
       "5      0.000000\n",
       "8      0.000000"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#家庭成员\n",
    "Train_set[[\"SibSp\", \"Survived\"]].groupby(\"SibSp\").mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Parch</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.343658</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.550847</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.600000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Survived\n",
       "Parch          \n",
       "0      0.343658\n",
       "1      0.550847\n",
       "2      0.500000\n",
       "3      0.600000\n",
       "4      0.000000\n",
       "5      0.200000\n",
       "6      0.000000"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set[[\"Parch\", \"Survived\"]].groupby(\"Parch\").mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "#家庭成员\n",
    "Train_set[\"Family_members\"] = Train_set[\"SibSp\"] + Train_set[\"Parch\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>Fare_class</th>\n",
       "      <th>Age_class</th>\n",
       "      <th>Family_members</th>\n",
       "      <th>Family_class</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Embarked Fare_class Age_class  \\\n",
       "0      0         A/5 21171   7.2500        S          0         1   \n",
       "1      0          PC 17599  71.2833        C          4         2   \n",
       "2      0  STON/O2. 3101282   7.9250        S          0         1   \n",
       "3      0            113803  53.1000        S          2         2   \n",
       "4      0            373450   8.0500        S          0         2   \n",
       "\n",
       "   Family_members Family_class  \n",
       "0               1            a  \n",
       "1               1            a  \n",
       "2               0            a  \n",
       "3               1            a  \n",
       "4               0            a  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "family_members = []\n",
    "for number in Train_set[\"Family_members\"]:\n",
    "    if number < 3:\n",
    "        family_members.append('a')\n",
    "    elif number < 6:\n",
    "        family_members.append('b')\n",
    "    elif number < 9:\n",
    "        family_members.append('c')\n",
    "    elif number < 11:\n",
    "        family_members.append('d')\n",
    "    else:\n",
    "        family_members.append('e')\n",
    "        \n",
    "Train_set[\"Family_class\"] = family_members\n",
    "Train_set.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Family_class</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>0.388750</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>0.409091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>c</th>\n",
       "      <td>0.222222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Survived\n",
       "Family_class          \n",
       "a             0.388750\n",
       "b             0.409091\n",
       "c             0.222222\n",
       "d             0.000000"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set[[\"Family_class\", \"Survived\"]].groupby(\"Family_class\").mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare', 'male', 'C', 'Q',\n",
       "       'fare_0', 'fare_1', 'fare_2', 'fare_3', 'fare_4', 'fare_5', 'age_0',\n",
       "       'age_1', 'age_2', 'age_3', 'age_4', 'family_a', 'family_b', 'family_c',\n",
       "       'family_d'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dummy_fare = pd.get_dummies(Train_set.Fare_class, prefix = \"fare\")\n",
    "dummy_age = pd.get_dummies(Train_set.Age_class, prefix = \"age\")\n",
    "dummy_family = pd.get_dummies(Train_set.Family_class, prefix = \"family\")\n",
    "\n",
    "Train_set_num = pd.concat([Train_set_num, dummy_fare, dummy_age, dummy_family], axis = 1)\n",
    "\n",
    "Train_set_num.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>male</th>\n",
       "      <th>C</th>\n",
       "      <th>Q</th>\n",
       "      <th>fare_0</th>\n",
       "      <th>fare_1</th>\n",
       "      <th>fare_2</th>\n",
       "      <th>fare_3</th>\n",
       "      <th>fare_4</th>\n",
       "      <th>fare_5</th>\n",
       "      <th>age_0</th>\n",
       "      <th>age_1</th>\n",
       "      <th>age_2</th>\n",
       "      <th>age_3</th>\n",
       "      <th>age_4</th>\n",
       "      <th>family_a</th>\n",
       "      <th>family_b</th>\n",
       "      <th>family_c</th>\n",
       "      <th>family_d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived  Pclass  male  C  Q  fare_0  fare_1  fare_2  fare_3  fare_4  \\\n",
       "0         0       3     1  0  0       1       0       0       0       0   \n",
       "1         1       1     0  1  0       0       0       0       0       1   \n",
       "2         1       3     0  0  0       1       0       0       0       0   \n",
       "3         1       1     0  0  0       0       0       1       0       0   \n",
       "4         0       3     1  0  0       1       0       0       0       0   \n",
       "\n",
       "   fare_5  age_0  age_1  age_2  age_3  age_4  family_a  family_b  family_c  \\\n",
       "0       0      0      1      0      0      0         1         0         0   \n",
       "1       0      0      0      1      0      0         1         0         0   \n",
       "2       0      0      1      0      0      0         1         0         0   \n",
       "3       0      0      0      1      0      0         1         0         0   \n",
       "4       0      0      0      1      0      0         1         0         0   \n",
       "\n",
       "   family_d  \n",
       "0         0  \n",
       "1         0  \n",
       "2         0  \n",
       "3         0  \n",
       "4         0  "
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Train_set_num.drop([\"Age\", \"Fare\", \"SibSp\", \"Parch\"], inplace = True, axis = 1)\n",
    "Train_set_num.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "#将处理好的数据拆分成训练集合验证集\n",
    "Cols = Train_set_num.columns\n",
    "feature_cols = Cols.drop(\"Survived\")\n",
    "\n",
    "X_train = Train_set_num[feature_cols] \n",
    "y_train = Train_set_num.Survived"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 逻辑回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.pipeline import Pipeline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "max_score=-1\n",
    "best_degree=-1\n",
    "\n",
    "for degree in range(1,6):\n",
    "    poly_features=PolynomialFeatures(degree =degree)\n",
    "    X_poly=poly_features.fit_transform(X_train)\n",
    "    lrc=LogisticRegression(C=5,solver = 'liblinear', max_iter = 1000)\n",
    "    \n",
    "    lrc.fit(X_poly,y_train)\n",
    "    train_score=lrc.score(X_poly,y_train)\n",
    "    print(\"Polynomial of grade: {}\".format(degree))\n",
    "    print(\"Score on the test set: {}\".format(train_score))\n",
    "    \n",
    "    if train_score >= max_score:\n",
    "        max_score = train_score\n",
    "        best_degree = degree\n",
    "print(\"best_degree:{}\".format(best_degree))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score : 0.8069584736251403\n"
     ]
    }
   ],
   "source": [
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "#流水线\n",
    "linear_svc = Pipeline([\n",
    "    (\"scaler\", StandardScaler()),\n",
    "    (\"svc\", LinearSVC(C = 1, loss = \"hinge\")),\n",
    "])\n",
    "linear_svc.fit(X_train.astype(\"float64\"), y_train)\n",
    "\n",
    "print(\"Score : {}\".format(linear_svc.score(X_train.astype(\"float64\"), y_train)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 网格搜索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "scaler = StandardScaler()\n",
    "\n",
    "scaler.fit(X_train.astype(\"float64\"))\n",
    "X_train_scaled = X_train\n",
    "X_train_scaled = scaler.transform(X_train_scaled.astype(\"float64\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best parameters: {'C': 1, 'coef0': 0.5, 'degree': 2}\n",
      "Score on the test set: 0.8417508417508418\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.svm import SVC\n",
    "\n",
    "# Polynomial kernel\n",
    "params = {\"degree\": [1,2,3], \"coef0\": [0,0.25,0.5,0.75,1], 'C':[1, 10, 100, 1000]}\n",
    "svc = SVC(kernel = \"poly\")\n",
    "\n",
    "poly_svc = GridSearchCV(svc, params, cv = 4, n_jobs = -1)\n",
    "\n",
    "poly_svc.fit(X_train_scaled.astype(\"float64\"), y_train)\n",
    "\n",
    "print(\"Best parameters: {}\".format(poly_svc.best_params_))\n",
    "print(\"Score on the test set: {}\".format(poly_svc.score(X_train_scaled.astype(\"float64\"), y_train)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "# KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'n_neighbors': 6}\n",
      "0.8125701459034792\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\model_selection\\_search.py:814: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "params = {\"n_neighbors\": [2,4,6,8,10,12,14,16,18,20,25,50]}\n",
    "knn=KNeighborsClassifier()\n",
    "knnc=GridSearchCV(knn,params,cv=4,n_jobs = -1)\n",
    "knnc.fit(X_train_scaled.astype(\"float64\"),y_train)\n",
    "\n",
    "score=knnc.score(X_train_scaled.astype(\"float64\"), y_train)\n",
    "print(knnc.best_params_)\n",
    "print(score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'max_depth': 6, 'max_features': 6, 'n_estimators': 8}\n",
      "0.8372615039281706\n"
     ]
    }
   ],
   "source": [
    "# RandomForestClassifier随机森林\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "rnd = RandomForestClassifier()\n",
    "\n",
    "params = {\"n_estimators\": [2,4,8,20,50,100,200], 'max_depth':[2,4,6,8,10], 'max_features': [2,4,6,8]}\n",
    "\n",
    "\n",
    "rndc = GridSearchCV(rnd, params, cv = 4, n_jobs = -1, iid = True)\n",
    "\n",
    "rndc.fit(X_train_scaled.astype(\"float64\"), y_train)\n",
    "\n",
    "print(rndc.best_params_)\n",
    "print(rndc.score(X_train_scaled.astype(\"float64\"), y_train))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
